package com.fqy.ticket.member.enums;

import java.util.*;

public enum PassengerTypeEnum {

    ADULT("1", "成人"),
    CHILD("2", "儿童"),
    STUDENT("3", "学生");

    private String code;

    private String desc;

    PassengerTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 获取乘客类型枚举的选项列表，用于前端下拉框等场景
     * @return 包含乘客类型编码和描述的键值对列表
     *         每个Map包含两个固定字段：
     *         - code: 乘客类型的编码（如ADULT）
     *         - desc: 乘客类型的描述（如成人）
     */
    public static List<Map<String, String>> getEnumList() {
        // 初始化列表，预分配容量为枚举值数量，避免后续扩容开销
        List<Map<String, String>> options = new ArrayList<>(PassengerTypeEnum.values().length);

        // 遍历枚举的所有实例（EnumSet保证顺序与values()一致且性能更优）
        for (PassengerTypeEnum type : EnumSet.allOf(PassengerTypeEnum.class)) {
            // 使用LinkedHashMap保证插入顺序，初始容量设为2（固定两个字段）
            Map<String, String> option = new LinkedHashMap<>(2);

            // 添加编码字段（如"ADULT"）
            option.put("code", type.getCode());

            // 添加描述字段（如"成人"）
            option.put("desc", type.getDesc());

            // 将当前枚举值的映射添加到结果列表
            options.add(option);
        }

        return options;
    }
}

